package src.com.test.Practice;

import src.com.test.Student;

import java.io.FileWriter;
import java.io.IOException;
import java.lang.reflect.Field;

public class App {
    public static void main(String[] args) throws IOException, IllegalAccessException {
        /*
        * 需求: 对于任意一个对象,该框架都可以把对象的字段名和对应的值,保存到文件中去
        * 步骤:
        *     ①定义一个方法，可以接收任意对象。
        *     ②每收到一个对象后，使用反射获取该对象的Class对象，然后获取全部的成员变量。
        *     ③遍历成员变量，然后提取成员变量在该对象中的具体值。
        *     ④把成员变量名、和其值，写出到文件中去即可。
        * */

        Student student = new Student("李四",24);
        Teacher teacher = new Teacher("赵六",26);

        Method(student);
        Method(teacher);
    }

    public static void Method(Object obj) throws IOException, IllegalAccessException {
        Class<?> aClass = obj.getClass();

        FileWriter fw = new FileWriter("a.txt",true);

        fw.write("------------"+obj.getClass().getName()+"--------------------"+"\r\n");
        Field[] declaredFields = aClass.getDeclaredFields();
        for (Field declaredField : declaredFields) {
            declaredField.setAccessible(true);
            fw.write(declaredField.getName()+" "+declaredField.get(obj)+"\r\n");
        }

        fw.close();
    }
}
